Synchronization with Different Clock Transport Protocols

ABSTRACT

A bridge element is provided for establishing clock synchronization across network elements including a first network element using a first clock synchronization transport protocol and a second network element using a second clock synchronization transport protocol different from the first clock synchronization transport protocol. The bridge element includes a port, a protocol translation port and an interconnect structure. The port may receive a clock synchronization signal from the first network element using the first clock synchronization protocol. The interconnect structure may receive the clock synchronization signal from the port. The protocol translation port may receive the clock synchronization signal from the interconnect structure, translate the clock synchronization signal between the first clock synchronization transport protocol and the second clock synchronization transport protocol, and provide the translated clock synchronization signal to the second network element using the second clock synchronization protocol.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. application Ser.No. 15/275,316, filed Sep. 23, 2016, which claims the benefit of U.S.Provisional Application No. 62/348,782 filed Jun. 10, 2016, the contentsof which are hereby incorporated by reference as if fully stated herein.

FIELD

One aspect of the disclosure herein relates to synchronizing timebetween devices in a network, and more particularly relates todetermining the reliability of a timestamp.

BACKGROUND

Time synchronization between interconnected nodes in a network is oftenimportant to operation of the nodes. Time synchronization typicallyinvolves sharing time synchronization messages between the nodes so thatnodes (often called slave nodes) may synchronize their own clocks inaccordance with the clock of a node that has been designated the masternode. For example, a master node sends a time synchronization message toa slave node at a first time indicated by a timestamp T1. The slave nodereceives the time synchronization message including the timestamp T1 andnotes the local time T1′ when the message is received. The slave nodecalculates a network transit time, which is the time it takes for thetime synchronization message to travel from the slave node to the masternode, by sending a message to the master node at a time T2. The masternode receives this message at a time T2′ and sends a message back to theslave node including the timestamp T2′. Based on T1, T1′, T2 and T2′,the slave node calculates an offset between the clock of the master nodeand the clock of the slave node. The slave node may use the offsetinformation to adjust its local clock into agreement with the clock ofthe master node. Fluctuations in the delay of the network, jitter ornoise often affects the accuracy of a timestamp included in a timesynchronization message, such that time synchronization is sometimesinaccurate between the master and slave nodes.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments herein are illustrated by way of example and not by wayof limitation in the figures of the accompanying drawings in which likereferences indicate similar elements. It should be noted that referencesto “an” or “one” embodiment in this disclosure are not necessarily tothe same embodiment, and they mean at least one. Also, in the interestof conciseness and reducing the total number of figures, a given figuremay be used to illustrate the features of more than one embodiment, andnot all elements in the figure may be required for a given embodiment.

FIG. 1 is a representational view for explaining interconnected nodes ina first example network according to an embodiment herein.

FIG. 2 is a representational view for explaining interconnected nodes ina second example network according to an embodiment herein.

FIG. 3 is a flow diagram for explaining a time synchronization processbetween a slave node and a master node according to an embodimentherein.

FIG. 4 is a flow diagram for explaining a time synchronization processbetween a slave node and a master node having an intermediate nodetherebetween according to an embodiment herein in which chain of qualityinformation is accumulated by the intermediate node.

FIG. 5 is a flow diagram for explaining a time synchronization processbetween a slave node and a master node having an intermediate nodetherebetween according to an embodiment herein in which chain of qualityinformation is adjusted by the intermediate node.

FIG. 6 is a representational view for explaining an example nodeaccording to embodiments herein.

FIG. 7 is a representational view for explaining an example bridgeelement according to embodiments herein in which nodes use clocksynchronization transport protocols.

FIG. 8 is a representation view for explaining an example node usingIEEE 802.1AS as its clock synchronization transport protocol accordingto an embodiment herein.

DETAILED DESCRIPTION

Several embodiments are now explained with reference to the appendeddrawings. Whenever aspects are not explicitly defined, the embodimentsare not limited only to the parts shown, which are meant merely for thepurpose of illustration. Also, while numerous details are set forth, itis understood that some embodiments may be practiced without thesedetails. In other instances, well-known circuits, structures, andtechniques have not been shown in detail so as not to obscure theunderstanding of this description.

As used herein, the term “network” refers without limitation to anynetwork configured to transfer data as groupings called packets. Packetnetworks can deliver streams of data (composed sequences of packets) toa community of devices. During transfer, packets are buffered andqueued, and may experience variable delays and throughput depending onthe traffic load in the network. As used herein, the term “master” or“upstream” node refers to a device or interface configured to packetizeinformation for transfer via a packet-based network. The terms “slave”or “downstream” node refers to a device or interface configured toextract information from a packet. A “node” refers to a device whichreceives packets, and forwards the packets to another device. The term“timestamp” refers to any indication (sequence of characters or encodedinformation) of when a certain event occurred as determined by a clockof a node. These definitions are not considered to be limiting and aremade only to clarify various aspects discussed herein.

The inventors herein have recognized that various characteristics ofclocks of network nodes and links between the network nodes may impactan amount of noise included in a timestamp and the accuracy of timesynchronization. For instance, nodes may be connected to a network usingdifferent types of links, such as a wired link (e.g., Ethernet) or awireless link. In addition, each type of link may have differentaccuracy metrics for performance of time synchronization. Also effectingaccuracy of time synchronization is the type of timestamping used by anode to generate a timestamp, such as a hardware-implemented process ora software-implemented process. Accordingly, timestamps received by anode may be reliable or unreliable depending on the type of link used byan upstream node to send the time synchronization message and timestampand depending on the type of timestamping used by the upstream node.

An embodiment herein addresses the foregoing by performing timesynchronization between nodes in a network with greater accuracy, evenin situations where nodes are connected by different types of links anduse different types of timestamping, by determining reliability of areceived timestamp. Reliability of the timestamp may be determined basedon several factors, including information regarding the accuracy of aclock in the upstream node (which may be provided by a manufacturer ofthe clock), a type of timestamping used by the upstream node (e.g.,hardware or software), a type of link used by the upstream node to sendthe time synchronization message and the timestamp (e.g., wired orwireless) and clock drift parameters (e.g., crystal performance relativeto temperature of the crystal). This quality information may be sharedbetween the nodes in a time synchronization message or in a separatequality message.

In one embodiment, the quality information is received by a node, andthe node generates an accumulated chain of quality information by addingits own local quality information to the received quality informationand sends the accumulated quality information to a downstream node. Inanother embodiment, the quality information is received by a node andprocessed by the node to generate an adjusted timestamp and adjustedchain of quality information to send to a downstream node.

Based on the chain of quality information, a node determines whether areceived timestamp is reliable or unreliable. For example, if the chainof quality information indicates that the type of timestamping used by amaster node is hardware timestamping and that the type of link beingused by the master node to send a time synchronization message includinga timestamp is a wired link, a slave node determines that the masterclock is reliable and that timestamps generated by the master clock arereliable (e.g., accurate within nanoseconds). In this case, the nodedetermines parameters for a filter that is applied to a sequence ofreceived timestamps such that the filtering is not aggressive. On theother hand, if the chain of quality information indicates that the typeof timestamping used by the master node is software timestamping andthat the type of link being used by the master node to send a timestampincluded in a time synchronization message is a wireless link, the slavenode determines that the master clock is unreliable and that timestampsgenerated by the master clock are unreliable (e.g. inaccurate by tens ofmilliseconds). In this case, the node determines parameters for a filterthat is applied to a sequence of received timestamps such that thefiltering is aggressive.

By virtue of the arrangements described herein, it is possible todetermine reliability of a received timestamp by extracting chain ofquality information of upstream nodes, thereby improving accuracy oftime synchronization.

FIG. 1 is a representational view illustrating interconnected nodes in afirst example network according to an embodiment herein. In theillustrated embodiment, the network 100 includes a master node 110 incommunication with a number of slave nodes 120 (individually slave nodes120 a, 120 b, 120 c, 120 d, 120 e . . . 120 n) through links 130(individually links 130 a, 130 b, 130 c, 130 d, 130 e . . . 130 n),respectively. Nodes 110 and 120 are, for example, servers, computers(desktop, laptop, handheld, etc.), routers, firewalls, gateways, networkand personal media devices, electronic devices and mobile devices, etc.

Each of nodes 110 and 120 is generally a time-aware system including itsown local clock source, and each of slave nodes 120 is capable ofsynching its own local clock with the clock of a node that has beendesignated as a master node (such as master node 110.) Each of nodes 110and 120 generates a timestamp using its clock and a type of timestampingprocess, such as a hardware-implemented process or asoftware-implemented process. For example, with respect tohardware-implemented timestamping, when a message departs from orarrives at a node, special hardware generates a timestamp from the localclock. With respect to software-implemented timestamping, when a messagereaches the application layer of a node, a processor executes a softwareprogram or computer-executable method stored in a memory in order togenerate a timestamp based on the local clock. Generally, a timestampgenerated by a hardware-implemented process is more accurate than atimestamp generated by a software-implemented process.

Links 130 are of a wired type (e.g., Ethernet) or a wireless type, andeach type of link between master node 110 and slave nodes 120 hasdifferent accuracy metrics for performance of time synchronization. Forexample, a timestamp provided in a time synchronization message over awired link type is typically more accurate than a timestamp provided ina time synchronization message over a wireless link type.

Using links 130, master node 110 sends a time synchronization message toslave nodes 120 including a timestamp generated by the clock source ofmaster node 110. In addition, master node 110 generates and sends chainof quality information to slave nodes 120. The chain of qualityinformation may be included in the time synchronization message, oralternatively may be provided in a separate quality message at a same ordifferent timing. The chain of quality information may indicate, amongother things, information regarding the accuracy of the clock of masternode 110, a type of timestamping used by the master node 110 (e.g.,hardware or software), a type of link used by master node 110 to sendthe time synchronization message including the timestamp (e.g., wired orwireless) and clock drift parameters of the clock of master node 110(e.g., crystal performance relative to temperature of the crystal). Thisprocess is described in more detail below in connection with FIG. 3.

FIG. 2 is a representational view illustrating interconnected nodes in asecond example network according to an embodiment herein. In theillustrated embodiment, the network 200 includes master node 210 incommunication with intermediate node 215 through link 230, and slavenode 220 in communication with intermediate node 215 through link 235.The network elements (nodes, links) illustrated in FIG. 2 are similar tothe network elements illustrated in FIG. 1; however, the elements have adifferent topological arrangement in which an intermediate node (215) isprovided between a master node (210) and a slave node (220).Accordingly, similar to the embodiment of FIG. 1, nodes 210, 215 and 220are, for example, servers, computers (desktop, laptop, handheld, etc.),routers, firewalls, gateways, network and personal media devices,electronic devices and mobile devices, etc.

Also similar to FIG. 1, each of nodes 210, 215 and 220 is generally atime-aware system including its own local clock source, and nodes 215and 220 are capable of synching their own local clocks with the clock ofa node that has been designated as a master node (such as master node210.) Each of nodes 210, 215 and 220 generates a timestamp using a typeof timestamping process, such as a hardware-implemented process or asoftware-implemented process. As in FIG. 1, with respect tohardware-implemented timestamping, when a message departs from orarrives at a node, special hardware generates a timestamp from the localclock. With respect to software-implemented timestamping, when a messagereaches the application layer of a node, a processor executes a softwareprogram or computer-executable method stored in a memory in order togenerate a timestamp based on the local clock. Generally, a timestampgenerated by a hardware-implemented process is more accurate than atimestamp generated by a software-implemented process.

Links 230 and 235 are of a wired type (e.g., Ethernet) or a wirelesstype, and each type of link 230, 235 has different accuracy metrics forperformance of time synchronization. As in FIG. 1, a timestamp providedover a wired link type is typically more accurate than a timestampprovided over a wireless link type.

Using link 230, master node 210 sends a time synchronization message tointermediate node 215 including a timestamp generated by the clocksource of master node 210. In addition, master node 210 sends chain ofquality information to intermediate node 215 using link 230. The chainof quality information may indicate, among other things, informationregarding the accuracy of the clock of master node 210, a type oftimestamping used by the master node 210 (e.g., hardware or software), atype of link used by master node 210 to send the time synchronizationmessage including the timestamp (e.g., wired or wireless) and clockdrift parameters of the clock of master node 210 (e.g., crystalperformance relative to temperature of the crystal).

Using link 235, intermediate node 215 sends a time synchronizationmessage to slave node 220. In addition, intermediate node 215 sendschain of quality information slave node 220. FIG. 4 illustrates anembodiment in which intermediate node 215 generates and sendsaccumulated chain of quality information, and FIG. 5 illustrates anembodiment in which intermediate node 215 generates and sends adjustedchain of quality information.

The chain of quality information sent by master node 210 andintermediate node 215 may be included in the time synchronizationmessage, or alternatively may be provided in a separate quality messageat a same or different timing.

Although FIGS. 1 and 2 illustrate two example network configurations, itwill be understood that the disclosure herein relates to anyconfiguration of networks, including point-to-point networks, networksconnected by a bus, star networks, ring networks, mesh networks, hybridnetworks, and daisy chain networks.

In addition, a network may have any number of nodes. For example, thenetwork configuration of FIG. 2 may have one or more additionalintermediate nodes in addition to intermediate node 215, provided inbetween master node 210 and slave node 220. In addition, the networkconfiguration of FIG. 1 may have any number of intermediate nodesprovided between master node 110 and slave nodes 120.

FIG. 3 is a flow diagram illustrating a time synchronization processbetween a slave node and a master node according to an embodimentherein. In this regard, the following embodiments may be described as aprocess 300 and a process 350, which are usually depicted as aflowchart, a flow diagram, a structure diagram, or a block diagram.Although a flowchart may describe the operations as a sequentialprocess, many of the operations can be performed in parallel orconcurrently. In addition, the order of the operations may bere-arranged. A process is terminated when its operations are completed.A process may correspond to a method, a procedure, etc. Processes 300and 350 may be performed by processing logic that includes hardware(e.g. circuitry, dedicated logic, etc.), software (e.g., embodied on anon-transitory computer readable medium), or a combination thereof.

In one example embodiment, process 300 is executed by master node 110and process 350 is executed by slave nodes 120. In this regard, althoughprocesses 300 and 350 of FIG. 3 are described in connection with thenetwork configuration illustrated in FIG. 1, it should be understoodthat these processes may be applied to other network configurations,including without limitation to network 200 of FIG. 2.

Referring to FIG. 3, at block 301 master node 110 generates a timestampusing its clock. The timestamp is included in a time synchronizationmessage also generated by master node 110. At block 302, master node 110generates a chain of quality information including a type oftimestamping used by the master node 110 (e.g., hardware or software), atype of link used by master node 110 to send the time synchronizationmessage including the timestamp (e.g., wired or wireless) and clockdrift parameters of the clock of master node 110. Clock drift parametersmay include information about how resistant the master clock is todrifting, or performance of the master clock's crystal relative totemperature of the crystal, and may be provided by a manufacturer of theclock. In cases where clock drift parameters are included in the chainof quality information, information indicating a temperature of themaster clock may also be included. The chain of quality information mayalso include any other information regarding the accuracy of the clockof master node 110.

At block 303, master node 110 sends to slave nodes 120 the timesynchronization message including the timestamp and the chain of qualityinformation. Accordingly, in the embodiment of FIG. 3, the chain ofquality information is included in the time synchronization message.However, in other embodiments, the chain of quality information may beprovided in a separate quality message at a same or different timingthan the time synchronization message. In this way, the chain of qualityinformation need not be provided with the transmission of every timesynchronization message, but may be provided one time or several timesduring a time synchronization session or process. For example, the chainof quality information may be provided during a session at any timecharacteristics relating to the chain of quality information change.

At block 351, slave nodes 120 receive the time synchronization messageincluding the timestamp and the chain of quality information from masternode 110. In embodiments in which the chain of quality information isprovided separately, the chain of quality information is receivedseparately from the time synchronization message. At block 352, slavenodes 120 calculates parameters for a filter that is applied to asequence of timestamps received from master node 110 based on thetimestamp and the chain of quality information received from master node110. The filter may be applied over a time period (e.g. 10 seconds) tosmooth the values of the received timestamps, and the parameters may beweights indicating how aggressive the filter is (e.g., an amount offiltering, attenuation or smoothing resulting from the filter).

In this regard, when synchronizing its own clock with that of masternode 110, each of slave nodes 120 relates the timestamp received bymaster node 110 to a local timestamp generated by the local clock of theslave node indicating the time of receipt of the timestamp from masternode 110, for instance by calculating a ratio. Typically, master node110 sends time synchronization messages including a timestamp at sometime interval (e.g., 100 milliseconds). Slave node 120 receives theseries of timestamps from master node 110 over some time period andstores the timestamps in a memory or buffer. Since the timestampstypically include some amount of noise, slave node 120 filters thesequence of timestamps in order to estimate the correct relationshipbetween the local clock and the master clock. This relationship betweenthe local clock and the master clock allows slave node 120 to adjust itsown clock to generate timestamps that are closer to being insynchronization with the master clock. In other embodiments, slave node120 processes the sequence of timestamps in order to calculate acorrection value or an offset for the received timestamp. Therelationship between the slave clock and the master clock and/or thecorrection values may be stored by slave nodes 120 in a look up table,or as a function representing the relationship.

When calculating parameters for the filter, slave nodes 120 determinewhether a received timestamp is reliable, since the appropriate amountof filtering depends on the reliability of the received timestamp.Generally, if it is determined from the chain of quality informationthat the clock generating a received timestamp is reliable (e.g., aclock generated by a hardware-implementation) and that the link overwhich the timestamp was sent is reliable (e.g., a wired link), slavenodes 120 determine that the timestamp is reliable. In these cases, lessfiltering is needed to perform accurate time synchronization. Also,slave nodes 120 may decrease the number of timestamps received frommaster node 110 for filtering, since fewer timestamps may be needed toaccurately estimate the master clock. For example, slave nodes 120 mayshorten the time period over which timestamps are received by masternode 110, thereby decreasing the number of timestamps received.

On the other hand, if it is determined from the chain of qualityinformation that the clock generating a received timestamp is unreliable(e.g., a clock generated by a software-implementation) and that the linkover which the timestamp is provided is unreliable (e.g., a wirelesslink), and that the timestamp is therefore unreliable, more filtering isneeded to perform accurate time synchronization. In these cases, slavenodes 120 may increase the number of timestamps received from masternode 110 for filtering, since more timestamps may be needed toaccurately estimate the master clock. For example, slave nodes 120 mayincrease the time period over which timestamps are received by masternode 110, thereby increasing the number of timestamps received.

Accordingly, if the chain of quality information indicates that masternode 110 generates timestamps using hardware-implemented timestampingand sends time synchronization messages over an Ethernet link, lessfiltering is generally needed for accurate time synchronization. On theother hand, if the chain of quality information indicates that masternode 110 generates timestamps using software-implemented timestampingand sends time synchronization messages over a wireless link, morefiltering is needed to get a similar level of accuracy for timesynchronization.

In cases where the chain of quality information includes clock driftparameters indicating that the master clock is drifting (e.g., due totemperature), slave nodes 120 may decrease an amount of filteringapplied to the sequence of timestamps.

As previously mentioned, the filter may smooth the received timestampsin order to estimate the relationship between the local clock and themaster clock. In some embodiments, the filter is a low pass filter thatpasses timestamps having a value lower than a predetermined thresholdand attenuates timestamps having values higher than the predeterminedthreshold, where the amount of attenuation depends on the parameterscalculated by slave nodes 120 based on the chain of quality informationreceived from master node 110. In this regard, timestamps having valueshigher than the predetermined threshold are reduced in amplitude by anamount determined by the parameters of the filter.

In other embodiments, the filter is a median filter that replaces eachtimestamp with the median of neighboring timestamps. A median filter isparticularly useful in situations where received timestamps areunreliable such that they are outliers when determining the relationshipbetween the slave clock and the master clock.

After parameters for the filter are determined and applied to a sequenceof timestamps at block 352, slave nodes 120 may adjust their own clocksto generate timestamps that are closer to being in synchronization withthe master clock. In one embodiment, slave nodes 120 then apply theseadjusted timestamps to extract digital information that may be includedin an audio or video signal that is being streamed from one node of thenetwork to another and is played back in real time on a slave node. Asone example, slave nodes 120 apply the adjusted timestamps to extractdigital information that is in a bitstream received from master node110. In other examples, any node of the network may be a source of thebitstream. Since slave nodes 120 use timestamps that have been adjustedaccording to process 300, it is possible to render the audio or videosignal to produce smooth, uninterrupted content.

FIG. 4 is a flow chart illustrating time synchronization between a slavenode and a master node having an intermediate node therebetweenaccording to an embodiment herein in which chain of quality informationis accumulated by the intermediate node. In this regard, the followingembodiments may be described as a processes 400, 420 and 440, which areusually depicted as flowcharts, flow diagrams, structure diagrams, orblock diagrams. Although a flowchart may describe the operations as asequential process, many of the operations can be performed in parallelor concurrently. In addition, the order of the operations may bere-arranged. A process is terminated when its operations are completed.A process may correspond to a method, a procedure, etc. Processes 400,420 and 440 may be performed by processing logic that includes hardware(e.g. circuitry, dedicated logic, etc.), software (e.g., embodied on anon-transitory computer readable medium), or a combination thereof.

In one example embodiment, process 400 is executed by master node 210,process 420 is executed by intermediate node 215 and process 440 isexecuted by slave node 220. In this regard, although processes 400, 420and 440 of FIG. 4 are described in connection with the networkconfiguration illustrated in FIG. 2, it should be understood that theseprocesses may be applied to other network configurations, includingwithout limitation to network 100 of FIG. 1.

Referring to FIG. 4, at block 401 master node 210 generates a timestampusing its clock. The timestamp is included in a time synchronizationmessage also generated by master node 210. At block 402, master node 210generates a chain of quality information including a type oftimestamping used by the master node 210 (e.g., hardware or software), atype of link used by master node 210 to send the time synchronizationmessage including the timestamp (e.g., wired or wireless) and clockdrift parameters of the clock of master node 210. Clock drift parametersmay include information about how resistant the master clock is todrifting, or performance of the master clock's crystal relative totemperature of the crystal, and may be provided by a manufacturer of theclock. In cases where clock drift parameters are included in the chainof quality information, information indicating a temperature of themaster clock may also be included. The chain of quality information mayalso include any other information regarding the accuracy of the clockof master node 210.

At block 403, master node 210 sends to intermediate node 215 the timesynchronization message including the timestamp and the chain of qualityinformation. Accordingly, in the embodiment of FIG. 4, the chain ofquality information is included in the time synchronization message.However, in other embodiments, the chain of quality information may beprovided in a separate quality message at a same or different timingthan the time synchronization message. In this way, the chain of qualityinformation need not be provided with the transmission of every timesynchronization message, but may be provided one time or several timesduring a time synchronization session or process. For example, the chainof quality information may be provided during a session at any timethere is a change in characteristics relating to the chain of qualityinformation.

At block 421, intermediate node 215 receives the time synchronizationmessage including the timestamp and the chain of quality informationfrom master node 210. In embodiments in which the chain of qualityinformation is provided separately, the chain of quality information isreceived separately from the time synchronization message. At block 422,intermediate node 215 generates a local timestamp using its clock, andat block 423, intermediate node 215 generates local chain of qualityinformation. This local chain of quality information includes a type oftimestamping used by the intermediate node 215 (e.g., hardware orsoftware), a type of link used by intermediate node 215 to send the timesynchronization message including the timestamp (e.g., wired orwireless) and clock drift parameters of the clock of intermediate node215. Clock drift parameters may include information about how resistantthe local clock is to drifting, or performance of the clock's crystalrelative to temperature of the crystal, and may be provided by amanufacturer of the clock. In cases where clock drift parameters areincluded in the chain of quality information, information indicating atemperature of the clock may also be included. The chain of qualityinformation may also include any other information regarding theaccuracy of the clock of intermediate node 215.

At block 424, intermediate node 215 generates accumulated chain ofquality information by adding or appending its own local chain ofquality information to the chain of quality information received frommaster node 210. In addition, intermediate node 215 includes its ownlocal timestamp with the local chain of quality information. Inembodiments where master node 210 provides the chain of qualityinformation in the time synchronization message, the local chain ofquality information and the local timestamp are also stored in the timesynchronization message. In embodiments where the master node 210provides the chain of quality information separate from the timesynchronization message, the local chain of quality information and thelocal timestamp are included with the quality message or in a separatequality message.

Accordingly, in the embodiment of FIG. 4, intermediate node 215 does notprocess the chain of quality information received from master node 210and instead accumulates the chain of quality information of the masternode 210 with its own local chain of quality information to send toslave node 220 at block 425. In addition, at block 425, intermediatenode 215 sends the timestamp received from master node 210 and the localtimestamp generated at block 422.

At block 441, slave node 220 receives timestamps from all of the nodesin its upstream path, namely master node 210 and intermediate node 215.At block 441, slave node 220 also receives chain of quality informationaccumulated from all of the nodes in its upstream path, including localchain of quality information from intermediate node 215 and the chain ofquality information received from master node 210.

In embodiments where there are additional intermediate nodes in betweenmaster node 210 and slave node 220 further to intermediate node 215,slave node 220 receives timestamps and chain of quality informationaccumulated from all of the nodes in its upstream path, including any ofthe additional intermediate nodes in the network 200.

At block 442, slave node 220 calculates parameters for a filter that isapplied to the timestamps received in block 441 based on the receivedtimestamps and the accumulated chain of quality information. The processof block 442 is similar to the process of block 352 of FIG. 3, and thedetails thereof will therefore not be discussed again here.

The embodiment of FIG. 4 is especially advantageous in cases where slavenode 220 does not have strict time synchronization requirements, sincethe resources of intermediate node 215 may be saved by not having toprocess received chain of quality information. As one example, masternode 210 may be a desktop computer connected by an Ethernet link 230 tointermediate node 215, and the intermediate node 215 may be a laptopcomputer connected by a wireless link to slave node 220 which may be anexternal electronic device. In this example, slave node 220 wants tosynchronize its own local clock with the clock of master node 210 butalso does not have strict time synchronization requirements. When masternode 210 sends a time synchronization message including a timestamp toslave node 220 through intermediate node 215, the quality of thetimestamp received by the intermediate node 215 may be high, sincemaster node 210 uses Ethernet link 230. However, the quality of thetimestamp received by the slave node 220 may be low, since intermediatenode 215 uses wireless link 235. If slave node 220 does not have stricttime synchronization requirements, it would be inefficient forintermediate node 215 to process the timestamp and chain of qualityinformation received by master node 210, since slave node 220 does notneed to receive a highly accurate timestamp. Accordingly, intermediatenode 215 sends accumulated chain of quality information instead ofprocessing the chain of quality information received from master node210.

FIG. 5 is a flow chart illustrating time synchronization between a slavenode and a master node having an intermediate node therebetweenaccording to an embodiment herein in which chain of quality informationis adjusted by the intermediate node. In this regard, the followingembodiments may be described as a processes 500, 520 and 540, which areusually depicted as flowcharts, flow diagrams, structure diagrams, orblock diagrams. Although a flowchart may describe the operations as asequential process, many of the operations can be performed in parallelor concurrently. In addition, the order of the operations may bere-arranged. A process is terminated when its operations are completed.A process may correspond to a method, a procedure, etc. Processes 500,520 and 540 may be performed by processing logic that includes hardware(e.g. circuitry, dedicated logic, etc.), software (e.g., embodied on anon-transitory computer readable medium), or a combination thereof.

In one example embodiment, process 500 is executed by master node 210,process 520 is executed by intermediate node 215 and process 540 isexecuted by slave node 220. In this regard, although processes 500, 520and 540 of FIG. 4 are described in connection with the networkconfiguration illustrated in FIG. 2, it should be understood that theseprocesses may be applied to other network configurations, includingwithout limitation to network 100 of FIG. 1.

Referring to FIG. 5, at block 501 master node 210 generates a timestampusing its clock. The timestamp is included in a time synchronizationmessage also generated by master node 210. At block 502, master node 210generates a chain of quality information including a type oftimestamping used by the master node 210 (e.g., hardware or software), atype of link used by master node 210 to send the time synchronizationmessage including the timestamp (e.g., wired or wireless) and clockdrift parameters of the clock of master node 210. Clock drift parametersmay include information about how resistant the master clock is todrifting, or performance of the master clock's crystal relative totemperature of the crystal, and may be provided by a manufacturer of theclock. In cases where clock drift parameters are included in the chainof quality information, information indicating a temperature of themaster clock may also be included. The chain of quality information mayalso include any other information regarding the accuracy of the clockof master node 210.

At block 503, master node 210 sends to intermediate node 215 the timesynchronization message including the timestamp and the chain of qualityinformation. Accordingly, in the embodiment of FIG. 5, the chain ofquality information is included in the time synchronization message.However, in other embodiments, the chain of quality information may beprovided in a separate quality message at a same or different timingthan the time synchronization message. In this way, the chain of qualityinformation need not be provided with the transmission of every timesynchronization message, but may be provided one time or several timesduring a time synchronization session or process. For example, the chainof quality information may be provided during a session at any timecharacteristics relating to the chain of quality information change.

At block 521, intermediate node 215 receives the time synchronizationmessage including the timestamp and the chain of quality informationfrom master node 210. In embodiments in which the chain of qualityinformation is provided separately, the chain of quality information isreceived separately from the time synchronization message. At block 522,intermediate node 215 generates an adjusted timestamp and an adjustedchain of quality information based on the timestamp and the chain ofquality information received from master node 210, as well as a localtimestamp generated using the clock of intermediate node 215 and localchain of quality information. This local chain of quality informationincludes a type of timestamping used by the intermediate node 215 (e.g.,hardware or software), a type of link used by intermediate node 215 tosend the time synchronization message including the timestamp (e.g.,wired or wireless) and clock drift parameters of the clock ofintermediate node 215. Clock drift parameters may include informationabout how resistant the local clock is to drifting, or performance ofthe clock's crystal relative to temperature of the crystal, and may beprovided by a manufacturer of the clock. In cases where clock driftparameters are included in the chain of quality information, informationindicating a temperature of the clock may also be included. The chain ofquality information may also include any other information regarding theaccuracy of the clock of intermediate node 215.

With respect to the adjusted timestamp, intermediate node 215 performs aprocess similar to that at block 442 of FIG. 4 and block 352 of FIG. 3,in which parameters are determined for a filter that is applied to asequence of received timestamps. In this way, intermediate node 215processes the timestamp and the chain of quality information receivedfrom master node 210 to generate an adjusted timestamp that is moreaccurate with respect to the master clock. This adjusted timestamp isprovided to slave node 220 at block 523.

With respect to the adjusted chain of quality information, intermediatenode 215 processes the chain of quality information received from masternode 210 and aggregates the information with its own local chain ofquality information to re-compute an adjusted chain of qualityinformation. For instance, master node 210 may be a desktop computerconnected by a wireless link 230 to intermediate node 215, and theintermediate node 215 may be a laptop computer connected by a wired linkto slave node 220 which may be an external electronic device. In thiscase, the chain of quality generated by master node 210 indicates that alink 230 between master node 210 and intermediate node 215 is unreliableand the local chain of quality information generated by intermediatenode 215 indicates that the link 235 between intermediate node 215 andslave node 220 is reliable. However, according to the embodiment of FIG.5, intermediate node 215 aggregates its own local chain of qualityinformation (indicating reliability) with the master node's chain ofquality information (indicating unreliability) to generate an adjustedchain of quality information indicating that the link quality isunreliable and sends the adjusted chain of quality information to slavenode 220 at block 523.

At block 541, slave node 220 receives the adjusted timestamp and theadjusted chain of quality information from intermediate node 215. Inembodiments where there are additional intermediate nodes in betweenmaster node 210 and slave node 220 further to intermediate node 215,each of the intermediate nodes performs the process 520 to generate anadjusted timestamp and adjusted chain of quality information. In theseembodiments, slave node 220 receives an adjusted timestamp and adjustedchain of quality information from its neighboring upstream node (e.g.the intermediate node immediately upstream from slave node 220).

At block 542, slave node 220 calculates parameters for a filter that isapplied to the timestamps received in block 541 based on the adjustedtimestamp and the adjusted chain of quality information. The process ofblock 542 is similar to the process of block 352 of FIG. 3, and thedetails thereof will therefore not be discussed again here.

The embodiment of FIG. 5 is particularly advantageous in situationswhere network elements are connected over unreliable links such aswireless type links but synchronicity is desired. For example, in anautomobile or in home entertainment system connected via a wirelessnetwork, it may be desirable for all network devices to have highlyaccurate time synchronization.

FIG. 6 is a representational view illustrating an example node 600according to embodiments herein. Node 600 is an example of nodes 110,120, 210, 215 and 220 used for implementing the techniques disclosedherein. Node 600 includes a processor 601, which can include one or moreprocessing devices. Examples of processor 601 include without limitationa microprocessor, an application-specific integrated circuit (ASIC), astate machine, or other suitable processing device. Processor 601 iscommunicatively coupled to a computer-readable storage medium, such asmemory 604, and accesses information stored in memory 604, such astimestamps and chain of quality information. Memory 604 also storescomputer-executable instructions that when executed by processor 601cause the processor 601 to perform the operations described herein.Memory 604 may be, for example, solid-state memories, optical andmagnetic media or any other non-transitory machine-readable medium.Non-limiting examples of memory 604 include a hard drive, compact disc,flash memory, non-volatile memory, volatile memory, magnetic disk(s),etc. Node 600 also includes a network interface 603 for communicatingwith other nodes of the network, and clock 602 for generatingtimestamps. As discussed above, clock 602 may be implemented by hardwareor by software.

FIG. 6 is merely one example of a particular implementation and ismerely to illustrate the types of components that may be present in anode. While the node 600 is illustrated with various components, it isnot intended to represent any particular architecture or manner ofinterconnecting the components; as such details are not germane to theembodiments herein. It will also be appreciated that network computers,handheld computers, mobile phones, servers, and/or other data processingsystems which have fewer components or perhaps more components may alsobe used with the embodiments herein. Accordingly, the processesdescribed herein are not limited to use with the hardware and softwareof FIG. 6.

FIG. 7 illustrates a block diagram for explaining a bridge elementaccording to an embodiment in which nodes of the network share timesynchronization messages using clock synchronization transportprotocols. While the bridge element 700 is illustrated with variouscomponents, it is not intended to represent any particular architectureor manner of interconnecting the components; as such details are notgermane to the embodiments herein. It will also be appreciated thatnetwork computers, handheld computers, mobile phones, servers, and/orother data processing systems which have fewer components or perhapsmore components may also be used with the embodiments herein.Accordingly, the processes described herein are not limited to use withthe hardware and software of FIG. 7.

In the embodiment of FIG. 7, network elements (such as nodes 110, 120,210, 215, 220) use different clock synchronization transport protocols,such as those according to IEEE 802.1AS and IEEE 1588. IEEE 802.1AS isdefined for wired Ethernet and may define various different protocols totransport time synchronization messages (on a peer to peer basis or on alink by link basis, for example). IEEE 802.1AS is a profile of IEEE 1588which also defines various different protocols to transport timesynchronization messages (e.g., on a unicast basis or multicast basis).Precise Time Protocol (PTP) is specified in IEEE 1588 and may use userdatagram protocol (UDP) as its transport protocol or Ethernet as itstransport protocol.

In situations where network elements use different clock synchronizationtransport protocols to share time synchronization messages, it may beadvantageous to bridge between the different types of clocksynchronization transport protocols in order to facilitate accuratesynchronization of time across the network elements. Referring to theexample node illustrated in FIG. 6, a node 600 includes a local clock602 and uses a clock synchronization transport protocol, such that thenode has its own time domain. In a network (such as networks 100 and200), each node may run on its own time domain.

By way of background, conventionally, in order to negotiate betweendifferent time domains of the network elements, a best master clockalgorithm is typically used to first elect a “best” clock (sometimescalled a “grandmaster”) to which all other clocks of the network synch.The best master clock algorithm used by each clock synchronizationtransport protocol may be different. As one example, each node ornetwork element of the network (such as networks 100 and 200) may sharean announce message including information regarding a local clock thatis used to generate a value, and the values generated by the networkelements are compared to find the lowest which is selected as thegrandmaster. After the grandmaster is selected, time synchronizationmessages are passed at an application layer after processing isperformed on the time synchronization messages to negotiate the timeboundary between the two time domains.

In the embodiment of FIG. 7, bridge element 700 includes interconnectstructure 710, an application layer 730, clock 740 for generating aclock synchronization signal that may be included in timesynchronization messages shared across a network, ports 720 a and 720 bconstructed to receive and send data (including a clock synchronizationsignal) according to a clock synchronization transport protocol andprotocol translation ports 750 a and 750 b constructed to translatebetween clock synchronization transport protocols, and to receive andsend data (including a clock synchronization signal) according tovarious clock synchronization transport protocols. Although theembodiment of FIG. 7 shows two ports 720 a and 720 b and two protocoltranslation ports 750 a and 750 b, any number of such ports may beincluded in other embodiments, including one or more than two. By virtueof the arrangement explained by FIG. 7, and particularly by using portsthat are able to translate between clock synchronization transportprotocols (such as IEEE 802.1AS and IEEE 1588), bridge element 700 mayprovide a time synchronization message including a clock synchronizationsignal from a node using a first clock synchronization transportprotocol directly to a node using a second clock synchronizationtransport protocol. For example, bridge element 700 may send the clocksynchronization signal from a node using IEEE 802.1AS directly to a nodeusing IEEE 1588, and vice versa. Since bridge element 700 may translatebetween the clock synchronization transport protocols (such as IEEE802.1AS and IEEE 1588), it is possible to share time synchronizationmessages using one time domain (i.e., without negotiating a second timedomain) and accuracy is thereby improved.

For instance, in an embodiment in which the network (such as networks100 and 200) have three network elements, it may be assumed that a firstnode uses IEEE 802.1AS as its clock synchronization transport protocol(see, for example, FIG. 8 below) and that a second node uses IEEE 1588as its clock synchronization transport protocol. Referring to FIG. 7, inthe case that bridge element receives a clock synchronization signalfrom the first node using IEEE802.1AS, one of ports 750 a and 750 b ofbridge element 700 receives the clock synchronization signal from thefirst node. Ports 750 a and 750 b may be, as one example, PortSyncsdefined by IEEE 802.1AS and may share time synchronization messages withother network elements also using IEEE 802.1AS as their clocksynchronization transport protocol. Interconnect structure 710, whichis, as one example, a SiteSync defined by IEEE 802.1AS, receives theclock synchronization signal from one of ports 750 a and 750 b. One ofprotocol translation ports 750 a and 750 b receives the clocksynchronization signal from the interconnect structure 710, translatesthe clock synchronization signal between IEEE 802.1AS and IEEE 1588, andprovides the translated clock synchronization signal to the secondnetwork element using IEEE 1588. Thus, in one example embodiment,protocol translation ports 750 a and 750 b share time synchronizationmessages with network elements using IEEE 1588 as their clocksynchronization transport protocol.

On the other hand, in the case that bridge element receives a clocksynchronization signal from the second node using IEEE 1588, one ofprotocol translation ports 750 a and 750 b receives the clocksynchronization signal from the second node, translates the clocksynchronization signal between IEEE 1588 and IEEE 802.1AS, and providesthe translated clock synchronization signal to interconnect structure710. Interconnect structure 710 receives the translated clocksynchronization signal from the ports 750 a and 750 b and provides it toone of ports 720 a and 720 b. One of ports 720 a and 720 b receives thetranslated clock synchronization signal from interconnect structure 710and provides the translated clock synchronization signal to the firstnode using IEEE 802.1AS.

There may also be in a case in which the bridge element generates theclock synchronization signal itself. In these cases, clock 740 generatesa clock synchronization signal. Interconnect structure 710 receives theclock synchronization signal from the clock 740. One of ports 720 a and720 b receives the clock synchronization signal from the interconnectstructure and provides the clock synchronization signal to the firstnode using IEEE 802.1AS. One of protocol translation ports 750 a and 750b receives the clock synchronization signal from the interconnectstructure 710, translates the clock synchronization signal between IEEE802.1AS and IEEE 1588, and provides the translated clock synchronizationsignal to the second network element using IEEE 1588.

Furthermore, according to one example embodiment, IEEE 1588 v2 (PTP) Endto End synchronization is used as a mechanism for synchronizingdisjointed IEEE 802.1AS (gPTP) domains. In this embodiment, the PTP E2Eis advantageously integrated with the gPTP domain. By way of background,conventional approaches typically use PTP boundary clocks and have atime domain boundary between the PTP E2E clock and the gPTP domain. Incontrast, according to this example embodiment, the PTP E2E link is usedas another type of full duplex point to point port within the time awaresystem, thereby extending the gPTP domain across the IP link andcreating one gPTP domain rather than 2 gPTP domains with 2 boundaryclocks and time being derived across boundary clocks. This then allowsfor the use of the gPTP algorithms to share a common clock amongst allof these systems. In this embodiment, the network (for example, network100 and 200) is capable of sending and receiving Ethernet and/or IPpackets. This is supported on both wired and wireless networks. Theembodiment may be part of the software implementation of the IEEE 802.1standard. IEEE Standard 802.1AS (“IEEE Standard for Local andMetropolitan Area Networks-Timing and Synchronization for Time-SensitiveApplications in Bridged Local Area Networks”), which is incorporatedherein by reference in its entirety, provides mechanisms forsynchronizing frequency of clocks, and for measuring the propagationdelay across a link. It also provides a NIC-to-bridge interface inbridged network, and NIC-to-NIC in a two-machine network. It is based onIEEE 1588, and requires ingress/egress time stamping in the MAC (i.e.,Sync, PDelay Request, and PDelay Response frames time-stamped on egressand ingress).

FIG. 8 illustrates an example node or network element 800 using IEEE802.1AS as its clock synchronization transport protocol. Node 800includes local clock 810 and has a first time domain, an interconnectstructure such as SiteSynch 840, and ports such as PortSync 820 a and820 b. In a network (such as networks 100 and 200), a similar andseparate structure may also be running independently for a differentnode using IEEE 1588 as its clock synchronization transport protocol andhaving a second time domain. According to conventional approaches, in anetwork including node 800 and a node using IEEE 1588 as its clocksynchronization transport protocol (not shown), the time synchronizationmessages are passed at the time-aware higher-layer application level 830after processing is performed on the time synchronization messages tonegotiate the time boundary between the two time domains.

The processes and blocks described herein are not limited to thespecific examples described and are not limited to the specific ordersused as examples herein. Rather, any of the processing blocks may bere-ordered, combined or removed, performed in parallel or in serial, asnecessary, to achieve the results set forth above. The processing blocksassociated with implementing the structures and processes disclosedherein may be performed by one or more programmable processors executingone or more computer programs stored on a non-transitory computerreadable storage medium to perform the functions of the system. All orpart of the network may be implemented as, special purpose logiccircuitry (e.g., an FPGA (field-programmable gate array) and/or an ASIC(application-specific integrated circuit)). All or part of the networkmay be implemented using electronic hardware circuitry that includeelectronic devices such as, for example, at least one of a processor, amemory, a programmable logic device or a logic gate. Further, processescan be implemented in any combination hardware devices and softwarecomponents.

While certain embodiments have been described and shown in theaccompanying drawings, it is to be understood that such embodiments aremerely illustrative of and not restrictive, and the embodiments are notlimited to the specific constructions and arrangements shown anddescribed, since various other modifications may occur to those ofordinary skill in the art. The description is thus to be regarded asillustrative instead of limiting.

1. A bridge element for establishing clock synchronization acrossnetwork elements including a first network element using a first clocksynchronization transport protocol and a second network element using asecond clock synchronization transport protocol different from the firstclock synchronization transport protocol, the bridge element comprising:a port constructed to receive a clock synchronization signal from thefirst network element using the first clock synchronization protocol; aninterconnect structure constructed to receive the clock synchronizationsignal from the port; a protocol translation port constructed to receivethe clock synchronization signal from the interconnect structure, totranslate the clock synchronization signal between the first clocksynchronization transport protocol and the second clock synchronizationtransport protocol, and to provide the translated clock synchronizationsignal to the second network element using the second clocksynchronization protocol.
 2. The bridge element of claim 1, furthercomprising: a clock for generating a second clock synchronizationsignal, wherein: the interconnect structure is further constructed toreceive the second clock synchronization signal from the clock; the portis further constructed to receive the second clock synchronizationsignal from the interconnect structure and to provide the second clocksynchronization signal to the first network element using the firstclock synchronization protocol; and the protocol translation port isfurther constructed to receive the second clock synchronization signalfrom the interconnect structure, to translate the second clocksynchronization signal between the first clock synchronization transportprotocol and the second clock synchronization transport protocol, and toprovide the translated second clock synchronization signal to the secondnetwork element using the second clock synchronization protocol.
 3. Thebridge element of claim 1, wherein the first clock synchronizationtransport protocol is IEEE 802.1AS and the second clock synchronizationtransport protocol is IEEE
 1588. 4. A method for establishing clocksynchronization across network elements including a first networkelement using a first clock synchronization transport protocol and asecond network element using a second clock synchronization transportprotocol different from the first clock synchronization transportprotocol, the method comprising: receiving, by a protocol translationport, a clock synchronization signal from the first network elementusing the first clock synchronization transport protocol; translating,by a protocol translation port, the clock synchronization signal betweenthe first clock synchronization transport protocol and the second clocksynchronization transport protocol; receiving, by an interconnectstructure, the translated clock synchronization signal from the protocoltranslation port; and receiving, by a port, the translated clocksynchronization signal from the interconnect structure and providing thetranslated clock synchronization signal to the second network elementusing the second clock synchronization protocol.
 5. The method of claim4, wherein the first clock synchronization transport protocol is IEEE1588 and the second clock synchronization transport protocol is IEEE802.1AS.
 6. A non-transitory computer-readable storage medium storingexecutable program instructions which when executed by a bridge elementcause the bridge element to perform a method for establishing clocksynchronization across network elements including a first networkelement using a first clock synchronization transport protocol and asecond network element using a second clock synchronization transportprotocol different from the first clock synchronization transportprotocol, the method comprising: receiving, by a port, a clocksynchronization signal from the first network element using the firstclock synchronization protocol; receiving, by an interconnect structure,the clock synchronization signal from the port; receiving, by a protocoltranslation port, the clock synchronization signal from the interconnectstructure; translating, by a protocol translation port, the clocksynchronization signal between the first clock synchronization transportprotocol and the second clock synchronization transport protocol; andproviding the translated clock synchronization signal to the secondnetwork element using the second clock synchronization protocol.
 7. Thenon-transitory computer-readable storage medium of claim 6, furthercomprising: generating, by a clock, a second clock synchronizationsignal; receiving, by the interconnect structure, the second clocksynchronization signal from the clock; receiving, by the port, thesecond clock synchronization signal from the interconnect structure andproviding the second clock synchronization signal to the first networkelement using the first clock synchronization protocol; and receiving,by the protocol translation port, the second clock synchronizationsignal from the interconnect structure, translating the second clocksynchronization signal between the first clock synchronization transportprotocol and the second clock synchronization transport protocol, andproviding the translated second clock synchronization signal to thesecond network element using the second clock synchronization protocol.8. The non-transitory computer-readable storage medium of claim 6,wherein the first clock synchronization transport protocol is IEEE802.1AS and the second clock synchronization transport protocol is IEEE1588.